1、罗马数字旋转
思想：暴力求解，就是依次取num的每一位，然后按照数字对应的罗马

class Solution {
public:
    string intToRoman(int num) {
        string s;
        vector<string> v;
        int i=0;
        while(num)
        {
            i++;
            if(num%10==4||num%10==9)
            {
                if(i==1)
                {
                    if(num%10==4)
                    {
                        s+="IV";
                    }
                    else if(num%10==9)
                    {
                        s+="IX";
                    }
                }
                else if(i==2)
                {
                     if(num%10==4)
                    {
                        s+="XL";
                    }
                    else if(num%10==9)
                    {
                        s+="XC";
                    }
                }
                else if(i==3)
                {
                    if(num%10==4)
                    {
                        s+="CD";
                    }
                    else if(num%10==9)
                    {
                        s+="CM";
                    }
                }
            }
            else
            {
                if(num%10>5)
                {
                    if(i==1)
                    {
                        int j=num%10-5;
                        s+="V";
                        for(int i=0;i<j;i++)
                        {
                            s.push_back('I');
                        }
                    }
                    else if(i==2)
                    {
                        int j=num%10-5;
                        s+="L";
                        for(int i=0;i<j;i++)
                        {
                            s.push_back('X');
                        }
                    }
                    else if(i==3)
                    {
                        int j=num%10-5;
                        s+="D";
                        for(int i=0;i<j;i++)
                        {
                            s.push_back('C');
                        }
                    }
                }
                else if(num%10<5)
                {
                    if(i==1)
                    {
                        int j=num%10;
                        for(int i=0;i<j;i++)
                        {
                            s.push_back('I');
                        }
                    }
                    else if(i==2)
                    {
                        int j=num%10;
                        for(int i=0;i<j;i++)
                        {
                            s.push_back('X');
                        }
                    }
                    else if(i==3)
                    {
                        int j=num%10;
                        for(int i=0;i<j;i++)
                        {
                            s.push_back('C');
                        }
                    }
                    else
                    {
                        int j=num%10;
                        for(int i=0;i<j;i++)
                        {
                            s.push_back('M');
                        }
                    }
                }
                else if(num%10==5)
                {
                    if(i==1)
                    {
                        s+="V";
                    }
                    else if(i==2)
                    {
                        s+="L";
                    }
                    else if(i==3)
                    {
                        s+="D";
                    }
                }
            }
           
            v.push_back(s);
            num/=10;
            s.clear();//一定要将s置为空。
        }
        string s1;
        for(int i=v.size()-1;i>=0;i--)
        {
            s1+=v[i];
        }
        return s1;
    }
};

2、罗马数字转数字
思想：遍历s的每个字符，根据字符判断属于什么数字
class Solution {
public:
    int romanToInt(string s) {
        int count=0;
        int len=s.size()-1;
        int i=0;
        while(i<=len)
        {
            if(s[i]=='M')
            {
                while(i<=len&&s[i]=='M')
                {
                    count+=1000;
                    i++;
                }
            }
            else if(s[i]=='C')
            {
                if(i+1<=len&&(s[i+1]=='M'||s[i+1]=='D'))
                    count-=100;
                else
                    count+=100;
                i++;
            }
           
            else if(s[i]=='X')
            {
                if(i+1<=len&&(s[i+1]=='C'||s[i+1]=='L'))
                    count-=10;
                else
                    count+=10;
                i++;
            }
            else if(s[i]=='I')
            {
                if(i+1<=len&&(s[i+1]=='X'||s[i+1]=='V'))
                    count-=1;
                else
                    count+=1;
                i++;
            }
            else
            {
                if(s[i]=='V')
                    count+=5;
                else if(s[i]=='L')
                    count+=50;
                else if(s[i]=='D')
                    count+=500;
                i++;
            }
        }
        return count;
    }
};

3、最长的公共前缀
思想：读取第一个字符串，依次将每个字符与剩下的字符串比较
class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string s;
        if(strs.empty())
            return s;
        int len=strs.size();
        //的第一个for表示第一个字符串中的元素，第二个for表示每个字符串
        for(int i=0;i<strs[0].size();i++)
        {
            for(int j=1;j<len;j++)
            {
                if(strs[j].size()==i||strs[0][i]!=strs[j][i])
                    return s;
              
            }
            s+=strs[0][i];
        }
        return s;
    }
};